package com.shrcl.engineerprocess.domain;

import com.shrcl.engineerprocess.domain.impl.EngineerLevelImpl;
import com.shrcl.engineerprocess.domain.proxy.EngineerLevelProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import edu.fudan.mylang.pf.INamedModelObject;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = EngineerLevelImpl.class)
public interface EngineerLevel extends IModelObject, INamedModelObject {
  public abstract String getLevelId();
  
  public abstract EngineerLevel setLevelId(final String levelId);
  
  public abstract String getName();
  
  public abstract EngineerLevel setName(final String name);
  
  public abstract String getEntityName();
  
  public abstract Double getForceCost();
  
  public abstract EngineerLevel setForceCost(final Double forceCost);
  
  public abstract Double getLatestCost();
  
  public abstract EngineerLevel setLatestCost(final Double latestCost);
  
  public abstract void update(final Procedure1<? super EngineerLevel> updater);
  
  public abstract void checkValid();
  
  public abstract EngineerLevelProxy toProxy();
}
